package proyecto;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class Central{
	
	private int ipv4;
	private String ipv6;
	private Transporte transporte = new Transporte(20);
	private int capacidadMaximaPasajerosTransporte = transporte.getCapacidadMaximaPasajeros(); 
	private int peticionesMaximasEnviarTransporte = capacidadMaximaPasajerosTransporte /4 * 3; // 75%
	
	private ArrayList<Integer> transportesDisponibles = new ArrayList<Integer>();
	private ArrayList<int[]> paradasPeticiones = new ArrayList<int[]>();
	private Map<Integer, int[]> rutasTransp = new HashMap<Integer, int[]>();
	
	
	private int[] idTransp = {1,2,3,4,5,6};
	private int[][] rutas = {
							{1,2,3,4,5,6,7,8,9,10},
							{1,2,3,4,5,6,7,8,9,10},
							{1,2,3,4,5,6,7,8,9,10},
							{1,2,3,4,5,6,7,8,9,10},
							{1,2,3,4,5,6,7,8,9,10},
							{1,2,3,4,5,6,7,8,9,10},
							};
	
	
	
	public void cargarRutasTodas() {	
		for (int i = 0; i < rutas.length; i++) {
			rutasTransp.put(idTransp[i], rutas[i]);
		}
	}
	
	public void cargarTransportes() {
		for (int i = 0; i < idTransp.length; i++) {
			transportesDisponibles.add(idTransp[i]);
			
		}
	}
	
	public void cargarPeticion(int idParada) {
		boolean estaIngresado = false;
		int[] temp = new int[2];
		
		for (int i = 0; i < paradasPeticiones.size(); i++) {
			if (paradasPeticiones.get(i)[0] == idParada){
				estaIngresado = true;
				temp = paradasPeticiones.get(i);
				temp[1] = temp[1]+1;
				paradasPeticiones.remove(i);
				paradasPeticiones.add(temp);
				break;
			}
		}
		if (!estaIngresado){
			temp[0] = idParada;
			temp[1] = 1;
			paradasPeticiones.add(temp);
		}

		verificarEnvioTransporte();
	}
	
	public void verificarEnvioTransporte() {
		for (int i = 0; i < paradasPeticiones.size(); i++) {
			int peticiones = paradasPeticiones.get(i)[1];
			if (peticiones >= peticionesMaximasEnviarTransporte){
				enviarTransporte();
			}
			
		}
	}

	public void enviarTransporte(){
		if (!transportesDisponibles.isEmpty()){
			transporte.setIdTransporte(transportesDisponibles.get(0));
			transporte.setParadasRecorrido(rutas[0]);
			transporte.iniciarRecorrido();
			
			transportesDisponibles.remove(0);
		}
	}
	
	public static void main(String[] args) {
		Central central = new Central();
		central.cargarRutasTodas();
		central.cargarTransportes();
	}
}
